function y=grilla(x,n,redondeo)
%
%	grilla( x, n, "r" o "t") usa 
%       "r" : redondeo simétrico (default).
%       "t" : redondeo truncado.
%   x valor a incluir en la grilla.
%
error(nargchk(2,3,nargin))
% El 'x' debe ser numérico
if (~isnumeric(x))
    error('Uso: >> y=grilla(x,n,"r" o "t"), default "r"')
end
% El 'n' debe ser numérico
if (~isnumeric(n)) || (numel(n) ~= 1) || (n < 1) || (n > 16) || (mod(n,1) ~= 0)
	error('El número de dígitos de la grilla debe ser un entero positivo comprendido entre 1 y 16.')
end
% El 'n' debe ser numérico
% Veo el número de argumentos
optfun ='round';
if (nargin == 3)
    if redondeo=='t'
        optfun ='fix';
    end
end
% Modificación efectuada para salvar la división por cero.
if (x==0)
    y = 0;
    return
end

% Hacemos el cálculo. El signo está en la variable 'x'.
% El tipo de redondeo está en la variable redondeo que usa la función
% definida en optfun.
og = 10.^(floor(log10(abs(x)) - n + 1));
% En og tenemos la base elevada al exponente.
% En y quedará la variable en la grilla pretendida.
y = feval(optfun,x./og).*og;



 
